package l2

import (
	"reflect"

	"zstackgo/pkg/header/core"
	"zstackgo/pkg/header/host"
	"zstackgo/spring"
)

func init() {
	spring.RegisterInterface("header.network.l2.L2NetworkRealizationExtensionPoint", reflect.TypeOf((*L2NetworkRealizationExtensionPoint)(nil)).Elem())
}

type L2NetworkRealizationExtensionPoint interface {
	Realize(l2Network *L2NetworkInventory, hostUuid string, completion core.Completion) // default: completion.success()
	Check(l2Network *L2NetworkInventory, hostUuid string, completion core.Completion)
	GetSupportedL2NetworkType() *L2NetworkType
	GetSupportedHypervisorType() *host.HypervisorType
	Delete(l2Network *L2NetworkInventory, hostUuid string, completion core.Completion)
}
